class Solution {
public:
    bool canJump(vector<int>& nums) {
        int max_stride = nums[0];
        int len = nums.size();
        for(int i = 1; i < len-1; i++)
        {
            int cnt_stride = i+nums[i];
            if(max_stride >= i)
            {
                if(max_stride < cnt_stride)
                    max_stride = cnt_stride;
            }
            else
                return false;
        }

        return nums.size()==1 ? true : max_stride >= len-1;
    }
};